package com.csii.adhoc.dataunits.addcolumn;

import com.csii.adhoc.dataunits.NumberGroup;
import com.csii.adhoc.dataunits.TextGroup;

import java.util.List;

public class AddColumnReq {

    //新增列 id
    private String fieldId;
    //数据集id
    private String modelId;
    //新增的列名
    private String name;
    //新增列的中文名，方便扩展，暂留
    private String showName;
    /*
      前端新增列的类型
      1.公式函数
      2.时间差
      3.获取时间
      4.所有值/组内-累计值  rule = 0
      4.所有值/组内-组内所有值 rule = 1
      5.累计值/组内
      6.排名/组内
      7.分组赋值，类型值不带 7
      8.分组赋值-文字-带分组:
      9.分组赋值-数字-带分组:
      10.分组赋值-数字-自动:
    */
    private String type;
    //前端自动生成的注释字串
    /*
    1.公式函数时，为公式字串的复制:${admin的自助数据集_[6210][672c][989d]}*ABS(${admin的自助数据集_[9500][552e][989d]})
    2.时间差，为自动生成的时间差注释，例如："时间差【系统时间-${admin的自助数据集_[65e5][671f]([5e74][6708][65e5])}】，年"
    3.获取时间,为前端自动生成的时间注释，例如："月日【${admin的自助数据集_[65e5][671f]([5e74][6708][65e5])}】"
    4.所有值/组内-累计值:"所有求和【${admin的自助数据集_[6570][91cf]}】",
    4.所有值/组内-组内所有值:"按【${admin的自助数据集_[5546][54c1][7f16][7801]}、${admin的自助数据集_[5546][54c1][7c7b][522b]}】组内求和【${admin的自助数据集_[6210][672c][989d]}】",
    5.累计值/组内-累计值所有:"累加【${admin的自助数据集_[6210][672c][989d]}】",
    5.累计值/组内-组内累计值："按【${admin的自助数据集_[5546][54c1][7c7b][522b]}、${admin的自助数据集_[5546][54c1][540d][79f0]}】组内依次累加【${admin的自助数据集_[6210][672c][989d]}】",
    6.排名-升序排名:"排名【${admin的自助数据集_[6210][672c][989d]}】",
    6.排名-降序排名:"排名【${admin的自助数据集_[6210][672c][989d]}】",
    6.排名-组内升序排名:"按【${admin的自助数据集_[5546][54c1][7f16][7801]}、${admin的自助数据集_[5546][54c1][7c7b][522b]}】组内排名【${admin的自助数据集_[6210][672c][989d]}】",
    6.排名-组内降序排名:"按【${admin的自助数据集_[5546][54c1][7f16][7801]}、${admin的自助数据集_[5546][54c1][7c7b][522b]}】组内排名【${admin的自助数据集_[6210][672c][989d]}】",
     */
    private String text;

    //最后的值域
    /*
     * 1. 当为公式函数时，value 为所组公式的值域，参考FineBI为：${admin的自助数据集_[6210][672c][989d]}*ABS(${admin的自助数据集_[9500][552e][989d]})
     * 2. 当为时间差时，相当于是使用了一个计算时间的公式，value 为所组公式的值域，参考FineBI为："minuend": "SYSTEM_TIME",
     *    "minus": "admin的自助数据集_[65e5][671f]([5e74][6708][65e5])",
     *    "unit": 6 ，表示最终显示的时间域：年、季、月、周、日、日、分、秒等
     * 3. 获取时间："fieldId": "admin的自助数据集_[65e5][671f]([5e74][6708][65e5])",
      "     unit": 48
     * 4. 所有值-组内-累计值：
            "rule": 0,
            "origin": "admin的自助数据集_[6570][91cf]",
            "summary": 1
       4. 所有值-组内-组内所有值
       *  "rule": 1,
      "origin": "admin的自助数据集_[6210][672c][989d]",
      "summary": 1,
      "selects": [
        "admin的自助数据集_[5546][54c1][7f16][7801]",
        "admin的自助数据集_[5546][54c1][7c7b][522b]"
      ],
      "ordered": [
        "admin的自助数据集_[5546][54c1][7f16][7801]",
        "admin的自助数据集_[5546][54c1][7c7b][522b]",
        "admin的自助数据集_[5546][54c1][540d][79f0]",
        "admin的自助数据集_[6210][672c][989d]",
        "admin的自助数据集_[6570][91cf]",
        "admin的自助数据集_[9500][552e][989d]",
        "admin的自助数据集_[5355][636e][7f16][7801]",
        "admin的自助数据集_[95e8][5e97][7f16][7801]",
        "admin的自助数据集_[5546][54c1][7f16][7801]1",
        "admin的自助数据集_[65e5][671f]([5e74][6708][65e5])",
        "admin的自助数据集_[57ce][5e02]",
        "admin的自助数据集_[95e8][5e97][7f16][7801]1",
        "admin的自助数据集_[95e8][5e97][540d][79f0]",
        "admin的自助数据集_[7701][4efd]"
      ]
      * 5.累计值/组内-累计所有值:
           "rule": 0,
            "origin": "admin的自助数据集_[6210][672c][989d]"
        5.累计值/组内-组内累计值:
        *  "rule": 1,
      "origin": "admin的自助数据集_[6210][672c][989d]",
      "selects": [
        "admin的自助数据集_[5546][54c1][7c7b][522b]",
        "admin的自助数据集_[5546][54c1][540d][79f0]"
      ],
      "ordered": [
        "admin的自助数据集_[5546][54c1][7f16][7801]",
        "admin的自助数据集_[5546][54c1][7c7b][522b]",
        "admin的自助数据集_[5546][54c1][540d][79f0]",
        "admin的自助数据集_[6210][672c][989d]",
        "admin的自助数据集_[6570][91cf]",
        "admin的自助数据集_[9500][552e][989d]",
        "admin的自助数据集_[5355][636e][7f16][7801]",
        "admin的自助数据集_[95e8][5e97][7f16][7801]",
        "admin的自助数据集_[5546][54c1][7f16][7801]1",
        "admin的自助数据集_[65e5][671f]([5e74][6708][65e5])",
        "admin的自助数据集_[57ce][5e02]",
        "admin的自助数据集_[95e8][5e97][7f16][7801]1",
        "admin的自助数据集_[95e8][5e97][540d][79f0]",
        "admin的自助数据集_[7701][4efd]"
      ]
      6.排名-升序排名:
          "rule": 10,
          "origin": "admin的自助数据集_[6210][672c][989d]"
      6.排名-降序排名
          "rule": 11,
          "origin": "admin的自助数据集_[6210][672c][989d]"
      6.排名-组内升序排名:
      "rule": 12,
      "origin": "admin的自助数据集_[6210][672c][989d]",
      "selects": [
        "admin的自助数据集_[5546][54c1][7f16][7801]",
        "admin的自助数据集_[5546][54c1][7c7b][522b]"
      ],
      "ordered": [
        "admin的自助数据集_[5546][54c1][7f16][7801]",
        "admin的自助数据集_[5546][54c1][7c7b][522b]",
        "admin的自助数据集_[5546][54c1][540d][79f0]",
        "admin的自助数据集_[6210][672c][989d]",
        "admin的自助数据集_[6570][91cf]",
        "admin的自助数据集_[9500][552e][989d]",
        "admin的自助数据集_[5355][636e][7f16][7801]",
        "admin的自助数据集_[95e8][5e97][7f16][7801]",
        "admin的自助数据集_[5546][54c1][7f16][7801]1",
        "admin的自助数据集_[65e5][671f]([5e74][6708][65e5])",
        "admin的自助数据集_[57ce][5e02]",
        "admin的自助数据集_[95e8][5e97][7f16][7801]1",
        "admin的自助数据集_[95e8][5e97][540d][79f0]",
        "admin的自助数据集_[7701][4efd]"
      ]
      6.排名-组内降序排名
      "rule": 13,
      "origin": "admin的自助数据集_[6210][672c][989d]",
      "selects": [
        "admin的自助数据集_[5546][54c1][7f16][7801]",
        "admin的自助数据集_[5546][54c1][7c7b][522b]"
      ],
      "ordered": [
        "admin的自助数据集_[5546][54c1][7f16][7801]",
        "admin的自助数据集_[5546][54c1][7c7b][522b]",
        "admin的自助数据集_[5546][54c1][540d][79f0]",
        "admin的自助数据集_[6210][672c][989d]",
        "admin的自助数据集_[6570][91cf]",
        "admin的自助数据集_[9500][552e][989d]",
        "admin的自助数据集_[5355][636e][7f16][7801]",
        "admin的自助数据集_[95e8][5e97][7f16][7801]",
        "admin的自助数据集_[5546][54c1][7f16][7801]1",
        "admin的自助数据集_[65e5][671f]([5e74][6708][65e5])",
        "admin的自助数据集_[57ce][5e02]",
        "admin的自助数据集_[95e8][5e97][7f16][7801]1",
        "admin的自助数据集_[95e8][5e97][540d][79f0]",
        "admin的自助数据集_[7701][4efd]"
      ]
      7.分组赋值-文字
      "details": [
        {
          "content": [
            {
              "value": "日用品"
            },
            {
              "value": "生鲜"
            },
            {
              "value": "调料"
            }
          ],
          "id": "34f3435a75a7d04f",
          "value": "分组"
        }
      ],
      "useOther": "其他",
      "field": "admin的自助数据集_[5546][54c1][7c7b][522b]"
      *
      7.分组赋值-数字-自定义
      *  "min": "1",
      "max": "1800",
      "useOther": "其它",
      "nodes": [
        {
          "id": "49f0b3a5e6060e38",
          "min": "0",
          "max": "400",
          "closeMin": true,
          "closeMax": false,
          "groupName": "分组1",
          "valid": true
        },
        {
          "id": "484a41be234c1f09",
          "min": "400",
          "max": "800",
          "closeMin": true,
          "closeMax": false,
          "groupName": "分组2",
          "valid": true
        },
        {
          "id": "83af8bb99aca46b4",
          "min": "800",
          "max": "1200",
          "closeMin": true,
          "closeMax": false,
          "groupName": "分组3",
          "valid": true
        },
        {
          "id": "606e291a9c905e2f",
          "min": "1200",
          "max": "1600",
          "closeMin": true,
          "closeMax": false,
          "groupName": "分组4",
          "valid": true
        },
        {
          "id": "2620bbed7a0d82de",
          "min": "1600",
          "max": "2000",
          "closeMin": true,
          "closeMax": true,
          "groupName": "分组5",
          "valid": true
        }
      ],
      "field": "admin的自助数据集_[6570][91cf]"
      7.分组赋值-自动
         "min": "1",
      "max": "1800",
      "groupInterval": 400,
      "field": "admin的自助数据集_[6570][91cf]"
       */
    private String value1;
    private String value2;
    private String value3;
    private String subType;
    private List<ColValueOrderVo> selects;
    private List<ColValueOrderVo> ordered;
    private List<NumberGroup> numberGroups;
    private List<TextGroup> textGroups;

    public String getModelId() {
        return modelId;
    }

    public void setModelId(String modelId) {
        this.modelId = modelId;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getFieldId() {
        return fieldId;
    }

    public void setFieldId(String fieldId) {
        this.fieldId = fieldId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getShowName() {
        return showName;
    }

    public void setShowName(String showName) {
        this.showName = showName;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public Object getValue1() {
        return value1;
    }

    public void setValue1(String value1) {
        this.value1 = value1;
    }

    public Object getValue2() {
        return value2;
    }

    public void setValue2(String value2) {
        this.value2 = value2;
    }

    public Object getValue3() {
        return value3;
    }

    public void setValue3(String value3) {
        this.value3 = value3;
    }

    public String getSubType() {
        return subType;
    }

    public void setSubType(String subType) {
        this.subType = subType;
    }

    public List<ColValueOrderVo> getSelects() {
        return selects;
    }

    public void setSelects(List<ColValueOrderVo> selects) {
        this.selects = selects;
    }

    public List<ColValueOrderVo> getOrdered() {
        return ordered;
    }

    public void setOrdered(List<ColValueOrderVo> ordered) {
        this.ordered = ordered;
    }

    public List<NumberGroup> getNumberGroups() {
        return numberGroups;
    }

    public void setNumberGroups(List<NumberGroup> numberGroups) {
        this.numberGroups = numberGroups;
    }

    public List<TextGroup> getTextGroups() {
        return textGroups;
    }

    public void setTextGroups(List<TextGroup> textGroups) {
        this.textGroups = textGroups;
    }
}